Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
З В І Т
Лабораторна робота №5
з курсу «Програмне забезпечення мережених технологій»
Тема: «Створення клієнт-серверних програм
за допомогою бібліотек C#»
Лектор:
Проф. каф. ПЗ
Мельник Р.А.
Львів-2010
Мета роботи:
Ознайомитися з концепціями програмування мовою C#, а також засвоїти основні стандартні класи і методи бібліотек System.Net, System.Net.Sockets; навчитись створювати об’єкти клієнта та сервера, встановлювати між ними з’єднання і забезпечувати обмін повідомленнями між ними.
Теоретичні відомості
Клас Socket
Реалізує інтерфейс сокетів.
Простір імен: System.Net.Sockets
public class Socket : IDisposable
Клас Socket забезпечує широкий набір методів і властивостей для мережевих взаємодій. Клас Socket дозволяє виконувати як синхронну, так і асинхронну передачу даних з використанням будь-якого з комунікаційних протоколів, наявних в перерахуванні ProtocolType.
Клас Socket дотримується шаблону імен платформи .NET Framework для асинхронних методів. Наприклад, синхронний метод Receive відповідає асинхронним методам BeginReceive і EndReceive.
Якщо додатку при його виконанні потрібний лише один потік, можна скористатися приведеними нижче методами, які розроблені для роботи в синхронному режимі.
Якщо використовується протокол, орієнтований на встановлення з'єднання, такий як протокол TCP, сервер повинен виконувати прослухування підключень, використовуючи метод Listen. Метод Accept обробляє будь-які вхідні запити на підключення і повертає об'єкт Socket, який може використовуватися для передачі даних з віддаленого вузла. Слід використовувати цей повернений об'єкт Socket для виклику методу Send або Receive. Слід викликати метод Bind, перш ніж робити звернення до методу Listen, якщо необхідно вказати локальну IP-адрес або номер порту. Якщо потрібно під’єднатись підключення до вузла, слід викликати метод Connect. Для обміну даними слід викликати метод Send або Receive.
Якщо використовується протокол, не орієнтований на встановлення з'єднання, такий як протокол UDP, немає необхідності у відстежуванні підключень. Для прийому всіх дейтаграм, що поступають, слід викликати метод ReceiveFrom. Для посилки дейтаграм на віддалений вузол слід використовувати метод SendTo.
Якщо на сокеті виконується декілька асинхронних операцій, вони не обов'язково повинні завершуватися в тому ж порядку, в якому ці операції запускаються.
Коли прийом і відправка даних завершені, слід використовувати метод Shutdown для того, щоб відключити об'єкт Socket. Після виклику методу Shutdown слід звернутися до методу Close, аби звільнити всі пов'язані з об'єктом Socket ресурси.
Клас TcpClient
Забезпечує клієнтські підключення для мережевих служб TCP.
Простір імен: System.Net.Sockets
public class TcpClient : IDisposable
Клас TcpClient забезпечує прості методи для підключення, а також відправки і отримання потоків даних в мережі в синхронному режимі.
Для того, щоб об'єкт TcpClient міг виконати підключення і обмін даними, об'єкт TcpListener або Socket, створений з використанням протоколу ProtocolType TСР, повинен очікувати на вхідні запити на підключення. Підключитися до даного прослуховувача можна одним з наступних двох способів:
Створити об'єкт TcpClient і викликати один з трьох наявних методів Connect.
Створити об'єкт TcpClient, використовуючи ім'я вузла і номер порту віддаленого вузла. Цей конструктор автоматично робитиме спроби встановлення підключення.
Клас TcpListener
Чекає підключення від TCP-клієнтів мережі.
Простір імен: System.Net.Socketspublic class TcpListener
Клас TcpListener надає прості методи, призначені для очікування і прийому в блокуючому синхронному режимі вхідних запитів на підключення. Можна використовувати об'єкт TcpClient або Socket, аби підключитися до об'єкту TcpListener. Об'єкт TcpListener можна створити, використовуючи об'єкт IPEndPoint, локальну IP-адрес і номер локальн...